<?php

class myUser extends sfBasicSecurityUser
{
public function loginIn($nombre,$passwd)
	{		
		if(!$this->isAuthenticated())
		{
			$c = new Criteria();
			$c->add(AteneausuarioPeer::NOMB_USUARIO,strtoupper($nombre));
			$c->add(AteneausuarioPeer::CLAVE,str_pad($passwd,12,' ',STR_PAD_RIGHT));
			$objAteneausuario = AteneausuarioPeer::doSelect($c); 
			if($objAteneausuario)
			{			  
			    $idusuario= $objAteneausuario[0]->getId();			    
			    $this->setAttribute('idusuarioactual',$idusuario);
			    $idsesion= $objAteneausuario[0]->getId();
			    $this->setAttribute('idsesion',$idsesion);
			    $nombsesion= $objAteneausuario[0]->getNombUsuario();
			    $this->setAttribute('nombsesion',$nombsesion);
				// TODO: Agregar las credenciales 
				// para autenticar a los usuarios en base al
				// tipo de usuario
				$c = new Criteria();				
				$c->add(DatoEstudiantePeer::USUARIOATENEA_ID,$idusuario);				
				//$objDatoEstudiante = new DatoEstudiante();
				$objDatoEstudiante = DatoEstudiantePeer::doSelect($c);
				
				
				
				if ($objDatoEstudiante)
				{			
				
					$cedula = $objDatoEstudiante[0]->getCedula();
					//$correo = $objDatoEstudiante[0]->getEmailAlterno();
					// Carga la base de datos segun la empresa
					// Cambia el string de conexion (dns de databases.yml)
				 
					//$this->setAttribute('cedula', $cedula);
					//$this->setAttribute('correo', $correo);
					
				}else
				{
					$c = new Criteria();				
					$c->add(DatoPersonalPeer::USUARIO_ID,$idusuario);				
					//$objDatoEstudiante = new DatoEstudiante();
					$objDatoPersonal = DatoPersonalPeer::doSelect($c);
					
					if (!$objDatoPersonal)
					{
						$this->setAttribute('error','ERROR DE BASE DE DATOS');
						return false;
					}						
				}
				//$this->addCredential('admin');
				
				// Marcamos como autenticado al usuario
				$this->setAuthenticated(true);				
				$credencial = $this->buscarcredenciales($idusuario);
				
				//print 'idddddd'.$credencial[0];
				//exit;
				foreach ($credencial as $obj)
				{
					$this->addCredential($obj);
					//print $obj;	
				}
				//exit;								
				//$this->addCredential($credencial);				
				return true;
			} else 
			{
				$this->setAttribute('error','Usuario o Contraseña invalidos');
				return false;
			}		
			
		}else return false;
	}
	
public function Verificando($email)
{
	$c = new Criteria();
	$c->add(DatoEstudiantePeer::EMAIL_ALTERNO,strtoupper($email));	
	$objDato_estudiante = DatoEstudiantePeer::doSelect($c);
	
	if ($objDato_estudiante){
		
		$usuario_id= $objDato_estudiante[0]->getUsuarioateneaId();
		$correo = $objDato_estudiante[0]->getEmailAlterno();
		$this->setAttribute('correo',$correo);
		
		$c = new Criteria();
		$c->add(AteneausuarioPeer::ID,strtoupper($usuario_id));	
		$objAteneausuario = AteneausuarioPeer::doSelectOne($c);	
		 
		$clave= $objAteneausuario->getClave();
		$this->setAttribute('clave',$clave);		
		return true;	
	}
	else {
		$c = new Criteria();
		$c->add(DatoPersonalPeer::EMAIL,strtoupper($email));	
		$objDato_personal = DatoPersonalPeer::doSelect($c);
		
		if ($objDato_personal)
		{
			$usuario_id= $objDato_personal[0]->getUsuarioId();
			$correo = $objDato_personal[0]->getEmail();
			$this->setAttribute('correo',$correo);
			
			
			$c = new Criteria();
			$c->add(AteneausuarioPeer::ID,strtoupper($usuario_id));	
			$objAteneausuario = AteneausuarioPeer::doSelectOne($c);
			
			$clave= $objAteneausuario->getClave();
			$this->setAttribute('clave',$clave);			
			return true;
		}		
		else
		{
			$this->setAttribute('men','EMAIL NO CORRESPONDE A NINGUN USUARIO');
			return false;
		}
	}
	

	
		
}

public function buscarcredenciales($cred)
{
	$c = new Criteria();
	$c->add(MenuSistemaTareaPeer::USUARIO_ID,$cred);	
	$objtarea = MenuSistemaTareaPeer::doSelect($c);	
	
	$idcreden = array();
	foreach ($objtarea as $obj)
	{
		$idcreden[] = $obj->getTareaId();
	}
	
	$cantid = count($idcreden);
	$nombta = array();	
	for ($i=0;$i<$cantid;$i++)
	{ 		
		    $r = $idcreden[$i];		    		    		    
			$c = new Criteria();
			$c->add(TareaPeer::ID,$r);
			$objtarea2 = TareaPeer::doSelectOne($c);
			$nombta[] = $objtarea2->getNombreTarea();
	}		
	return $nombta;
}

public function RegistroIn($cedula)
	{
		if(!$this->isAuthenticated())
		{
			$c = new Criteria();
			$c->add(EstudiantePeer::CEDULA,$cedula);
			//$c->add(AteneausuarioPeer::CLAVE,str_pad($passwd,10,' ',STR_PAD_RIGHT));
			$objEstudiante = EstudiantePeer::doSelect($c); 
			if($objEstudiante)
		{			  			    
				$cedula = $objEstudiante[0]->getCedula();
                $estadoc = $objEstudiante[0]->getEstadoCivil();
			    $this->setAttribute('cedula', $cedula);
         	    $this->setAttribute('estadoc', $estadoc);
			    // TODO: Agregar las credenciales 
				// para autenticar a los usuarios en base al
				// tipo de usuario
		}            
         	    else
				{
					$this->setAttribute('error','No existe el usuario con esa cedula');
					return false;	
				}
				//$this->addCredential('admin');
				
				// Marcamos como autenticado al usuario
				$this->setAuthenticated(true);
				return true;
			} else return false;		
	
	}		
	
public function ValidarRol()
	{
		
		    $c = new Criteria();
			$c->add(RolPeer::DESCRIPCION,'estudiante');
			//$c->add(AteneausuarioPeer::CLAVE,str_pad($passwd,10,' ',STR_PAD_RIGHT));
			$objRol = RolPeer::doSelect($c); 
			if($objRol)
	     	{	
	     			  			    
				$rol = $objRol[0]->getId();
                $this->setAttribute('rol', $rol);
         	    // TODO: Agregar las credenciales 
				// para autenticar a los usuarios en base al
				// tipo de usuario	
	     	        
	     		  return true;	
			}            
         	    else
				{
				   $c = new Criteria();
				   $c->add(RolPeer::DESCRIPCION,'Estudiante');
		   	       $objRols = RolPeer::doSelect($c); 
			       if($objRols)
			       {
					$rol = $objRol[0]->getId();
                    $this->setAttribute('rol', $rol);
         	        return true;
			       }
				}
					
	
	}
	
public function loginOut()
	{
		$this->setAuthenticated(false);
		$this->clearCredentials();
		return true;
	}
	
	
}
